/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package cl.edinet.agencialinea3.web.application.home;

import cl.aperture.commons.DatoFecha;
import cl.aperture.commons.DefaultValidador;
import cl.aperture.commons.ValidationException;
import cl.aperture.commons.xml.XMLControlResponse;
import cl.edinet.agencialinea3.ejb.bean.parametro.ParametroDeclaracion;
import cl.edinet.agencialinea3.ejb.bean.parametro.ParametroDocumento;
import cl.edinet.agencialinea3.ejb.entity.Declaracion;
import cl.edinet.agencialinea3.ejb.entity.Documento;
import cl.edinet.agencialinea3.ejb.entity.Importador;
import cl.edinet.agencialinea3.ejb.entity.TipoOperacion;
import cl.edinet.agencialinea3.web.controller.MainController;
import cl.edinet.leela2.web.controller.annotations.LeelaFrontController;
import cl.edinet.zoidberg.tld.components.ZMenuNodo;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Iván Zúñiga & Tomás Quinteros
 */
@LeelaFrontController(urlPatterns = "/application/home/HomeFinanciero.view", pathDispatcher = "/application/home/homeFinanciero.jsp")
public class HomeFinanciero extends MainController {

    private Importador importador;
    private DatoFecha fechaAceptacionDesde;
    private DatoFecha fechaAceptacionHasta;
    private TipoOperacion tipoOperacion;
    private List<Importador> importadores;
    private Integer pagina;
    private final int cantidadRegistrosPorPagina = 25;
    private boolean isExportacion;

    @Override
    public void doValidate(DefaultValidador dv) throws ValidationException, Exception {

        fechaAceptacionDesde = getValidadorHandler().validarDatoFecha("fechaAceptacionDesde");
        fechaAceptacionHasta = getValidadorHandler().validarDatoFecha("fechaAceptacionHasta");
        
        //BigDecimal idImportador = getValidadorHandler().validarBigDecimal("importador");
        BigDecimal idImportador = getSessionAttribute("codigo_importador");
        
        if(idImportador==null){
            idImportador = getSessionAttribute("codigo_importador");
        }

        if (idImportador != null) {
            importador = getRemote().getImportador(idImportador);
            System.out.println("importador: "+importador);
        }

        pagina = getValidadorHandler().validarInteger("pagina");
        if (pagina == null) {
            pagina = 0;
        }

        BigDecimal codigoOperacion = getValidadorHandler().validarBigDecimal("operacion");
        if (codigoOperacion != null) {
            tipoOperacion = new TipoOperacion(codigoOperacion);
            isExportacion = (tipoOperacion != null && tipoOperacion.getCodigo().intValue() == 2);
        }

    }

    @Override
    public void doBusiness() throws ValidationException, Exception {

        int cantidadTotalRegistrosBusqueda;
        List<Declaracion> declaraciones=new ArrayList<Declaracion>();
        List<Documento> documentos=new ArrayList<Documento>();

        if (!isExportacion) {
            
            ParametroDeclaracion parametros = new ParametroDeclaracion();
            parametros.setImportador(importador);
            parametros.setFechaAceptacionDesde(fechaAceptacionDesde);
            parametros.setFechaAceptacionHasta(fechaAceptacionHasta);
            parametros.setTipoOperacion(tipoOperacion);
            parametros.setCantidadRegistrosPorPagina(cantidadRegistrosPorPagina);
            parametros.setRegistrosDesde(cantidadRegistrosPorPagina * pagina.intValue());
            
            cantidadTotalRegistrosBusqueda = getRemote().contarDeclaraciones(parametros);
            declaraciones = getRemote().getDeclaraciones(parametros);
            
        } else {
            
            ParametroDocumento parametros = new ParametroDocumento();
            parametros.setConsignatario(importador);
            parametros.setCantidadRegistrosPorPagina(cantidadRegistrosPorPagina);
            parametros.setRegistrosDesde(cantidadRegistrosPorPagina * pagina.intValue());
            
            cantidadTotalRegistrosBusqueda = getRemote().contarDocumentos(parametros);
            documentos = getRemote().getDocumentos(parametros);
            
        }

        //importadores = getRemote().getImportadores();
        importadores = new ArrayList<Importador>();
        importadores.add(importador);

        XMLControlResponse controlResponse = new XMLControlResponse();
        if (tipoOperacion != null) {
            controlResponse.add("operacion", tipoOperacion.getCodigo().toString());
        }
        if (fechaAceptacionDesde != null) {
            controlResponse.add("fechaAceptacionDesde", fechaAceptacionDesde.toEstandard());
        }
        if (fechaAceptacionHasta != null) {
            controlResponse.add("fechaAceptacionHasta", fechaAceptacionHasta.toEstandard());
        }
        if (importador != null) {
            controlResponse.add("importador", importador.getCodigo().toString());
        }

        addRequestAttribute("controlResponse", controlResponse);
        addRequestAttribute("declaraciones", declaraciones);
        addRequestAttribute("documentos", documentos);
        //addRequestAttribute("ZMenuNodo.menu", menu);
        addRequestAttribute("importadores", importadores);
        addRequestAttribute("int.cantidadTotalRegistrosBusqueda", cantidadTotalRegistrosBusqueda);
        addRequestAttribute("int.pagina", pagina);
        addRequestAttribute("int.cantidadRegistrosPorPagina", cantidadRegistrosPorPagina);
        addRequestAttribute("isExportacion", isExportacion);

    }
}
